package com.future.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.future.domain.Follow;
import com.future.domain.DTO.UserDTO;
import io.swagger.models.auth.In;

import java.util.List;

/**
 * 关注服务接口
 */
public interface FollowService extends IService<Follow> {
    /**
     * 关注用户
     * @param userId 关注者ID
     * @param followedUserId 被关注者ID
     * @return 是否关注成功
     */
    boolean followUser(Long userId, Long followedUserId);

    /**
     * 取消关注
     * @param userId 关注者ID
     * @param followedUserId 被关注者ID
     * @return 是否取消成功
     */
    boolean unfollowUser(Long userId, Long followedUserId);

    /**
     * 检查是否已关注
     * @param userId 关注者ID
     * @param followedUserId 被关注者ID
     * @return 是否已关注
     */
    boolean isFollowing(Long userId, Long followedUserId);

    /**
     * 获取用户的关注列表
     * @param userId 关注者ID
     * @return 关注的用户DTO列表
     */
    List<UserDTO> getFollowingList(Long userId, Integer pageNum, Integer pageSize);

    /**
     * 获取用户的粉丝列表
     * @param userId 被关注者ID
     * @return 粉丝DTO列表
     */
    List<UserDTO> getFollowerList(Long userId, Integer pageNum, Integer pageSize);

    /**
     * 获取用户的关注数量
     * @param userId 关注者ID
     * @return 关注数量
     */
    Long getFollowingCount(Long userId);

    /**
     * 获取用户的粉丝数量
     * @param userId 被关注者ID
     * @return 粉丝数量
     */
    Long getFollowerCount(Long userId);
}